import tensorflow as tf
import os


def picture_read():
    """
        读取图片示例。没有图片。。
    :return:
    """
    #1 构造文件名队列
    filenames = os.listdir("./dog")
    file_list = [os.path.join("./dog/",file) for file in filenames]
    #文件路径+文件名 列表。
    file_queue = tf.train.string_input_producer(file_list)
    #2 读取与编码
    reader = tf.WholeFileReader()
    # key 文件名， value 一个样本 一张图片的原始编码形式
    key,value = reader.read(file_queue)
    print("key: "+key) # Tensor()
    print("value: "+value)
    # 解码
    image = tf.image.decode_jpeg(value) #Tensor("DecodeJpeg:0,shape=(?,?,?), dtype=uint8)
    # 图像的形状和类型 修改。
    image_resized = tf.image.resize_images(image,size=[200,200]) #Tensor("**,shape=(200,200,?), dtype=float32)
    print("image_resized: "+ image_resized)

    # 静态形状修改
    image_resized.set_shape([200,200,3])
    print("image_resized: " + image_resized)

    #3 批处理 要确定image的形状才能进行批处理。
    image_batch = tf.train.batch([image_resized],num_threads=1,batch_size=100,capacity=100)
    #开启会话计算
    with tf.Session() as sess:
        #开启线程  如果没开启，程序就会阻塞住。
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(sess,coord=coord)
        key_new,value_new,image_new,image_resized_new,image_batch_new = sess.run([key,value,image,image_resized,image_batch])
        print("key_new: " , key_new)
        print("value_new: " , value_new)
        print("image_new: " , image_new) #三阶矩阵
        print("image_batch_new: ",image_batch_new)

        #回收线程。
        coord.request_stop()
        coord.join(threads)
    return None


if __name__ == "__main__":
    picture_read()
